home *** CD-ROM | disk | FTP | other *** search
- CVS 1.11.1p1 Amiga port (29 April 2001)
- =======================================
-
- Introduction
- ------------
- This is a somewhat rough port of GNU CVS 1.11.1p1, a version control system, which
- allows you to keep old versions of files (usually source code), keep a log of
- who, when, and why changes occurred, etc., like RCS or SCCS. It handles
- multiple developers, multiple directories, triggers to enable/log/control
- various operations, and can work over a wide area network. The following tasks
- are not included; they can be done in conjunction with CVS but will tend to
- require some script-writing and software other than CVS: bug-tracking, build
- management (that is, make and make-like tools), and automated testing. (Quoted
- from the CVS documentation.)
-
- I call this a 'rough port' since it is not as polished as, say Heinz Wrobel's
- excellent 'RCS' port. It does what it needs to do, but a few features are
- sorely lacking, such as support for Amiga file protection bits and code to
- communicate with CVS servers via secure channels (Kerberos, SSH). On the other
- hand, however, you get everything, and perhaps more, you got with the previous
- Amiga ports of CVS: this port does not require 'ixemul.library' to work and it
- does not require an RCS installation as it is completely self contained. The
- port also probably would win a price as the largest 'pure' executable; it can
- be made resident.
-
-
- What's in this package?
- -----------------------
- This distribution contains the Amiga port, the Amiga specific source code and
- most of the original GNU CVS 1.11.1p1 distribution. 'Most' in this case means that
- only the original source code has been omitted in order to keep the
- distribution archive small; the documentation and support files are all
- provided. The original source code can be downloaded from the Internet at
- 'ftp://ftp.cvshome.org/pub/cvs-1.11.1p1/cvs-1.11.1p1.tar.gz'. I have added two more
- files which are converted from the original Unix man pages, namely 'cvs.1.man'
- and 'cvs.5.man' whose sources can be found in the 'cvs-1.11.1p1/man' directory.
-
-
- Installation
- ------------
- Almost everything you need to get CVS up and running is contained in the
- archive which also included the 'README.AMIGA' file you are currently reading.
- And that means the 'cvs' executable. You will also need a working
- 'queue-handler' (the one that ships with Workbench 3.1 and beyond is,
- unfortunately, broken) which can be found on Aminet (you can find the archive
- at 'http://us.aminet.net/pub/aminet/util/sys/HWGQueue.lha'). A TCP/IP stack
- like Miami or AmiTCP is supported but not strictly required: you can perfectly
- well keep your CVS repository on your local machine. Since CVS may ask you to
- edit the log entries associated with the files to store, you may want to
- configure the 'EDITOR' environment variable. Last, but not least, you must set
- up an environment variable which allows CVS to associate you with the changes
- you made; this should be the 'USER', 'LOGUSER' or 'USERNAME' variable.
-
- Most importantly, this port requires Kickstart 2.04 or higher.
-
- Here is how you could set up CVS on your machine. We start by creating two
- drawers on the 'Work:' volume:
-
- MakeDir Work:CVS-Root
- MakeDir Work:CVS-Home
-
- Next, we add two lines to the 'S:User-Startup' file:
-
- Assign CVSHOME: Work:CVS-Home
- Path CVSHOME: Add
-
- The CVS program will need to be copied:
-
- Copy cvs Work:CVS-Home CLONE
-
- And the path to the CVS repository needs to be set:
-
- SetEnv CVSROOT :local:Work:CVS-Root
- Copy ENV:CVSROOT ENVARC:
-
- Two environment variables need to be set up. Most importantly, CVS will need
- your ID to write it into the log and revision files it creates. The Amiga port
- will query three environment variables for that information, in the following
- order: 'USER', 'LOGUSER' and 'USERNAME'. This means if the variable 'USER' is
- not set, it will proceed to check whether 'LOGUSER' is set, and so forth. You
- may have already configured these variables, but if you haven't, I suggest you
- set up the 'LOGUSER' variable, like this:
-
- SetEnv LOGUSER <Your ID here>
- Copy ENV:LOGUSER ENVARC:
-
- Note that <Your ID here> should be replaced by a mnemonic, nick name or short
- name that must not contain any blank space characters.
-
- You may want to configure the 'EDITOR' environment variable to invoke your
- preferred text editor when CVS requests that log messages are added for an
- update. If this variable is not set, CVS will default to invoke the 'Ed'
- editor. This can be problematic if you have installed 'CygnusEd' whose 'Ed'
- program detaches from the Shell that invoked it. When CVS invokes the editor,
- it expects it to return only when the user has finished editing the respective
- file. Here is an example configuration for CygnusEd:
-
- SetEnv EDITOR Ed -keepio
-
- And here is one for TurboText:
-
- SetEnv EDITOR TTX WAIT
-
- Don't forget to save the environment variable setting to make it permanent,
- like this:
-
- Copy ENV:EDITOR ENVARC:
-
- Finally, install the 'queue-handler' from Aminet and reboot your machine. When
- the system is again up and running, initialize the CVS repository like this:
-
- cvs init
-
- And that's all. Well, maybe you want to add a few default options to the
- configuration file CVS reads upon startup. That file should be placed in the
- 'CVSHOME:' directory and called '.cvsrc':
-
-
- Usage
- -----
- I personally found the default CVS documentation to be rather confusing. If
- you don't know rather well what CVS is good for, the examples, the
- terminology, all this doesn't seem to make great sense. My introduction to CVS
- followed with Karl Fogel's book "Open Source Development with CVS" which
- describes in compact form what CVS is and how it may be used. I suggest that
- you consult the book (portions of which are available from 'www.coriolis.com')
- and/or the CVS documentation (which has been included with this archive in the
- 'cvs-1.11/doc' drawer) for hints and ideas on how to use the program.
-
- What many people fail to realize and what keeps them from using CVS in place
- of the revision control system they have used for years is that you do not
- need a networked CVS repository in order to use CVS. A local repository will
- do. In fact, I switched over most of my current software development projects
- to use a single local repository after I realized that CVS does much better
- what I had previously used RCS for.
-
-
- Notes on the implementation
- ---------------------------
- The Amiga port implements only the client side of the CVS system. This means
- that you can check out projects on remote servers but your local Amiga cannot
- be a CVS server itself. This feature was omitted deliberately since I could
- not find a safe and useful way to make CVS server mode work on the Amiga.
- AmigaOS is not a server operating system and shoehorning the code to make it
- work somehow would not have helped. If you need a CVS server, try a dedicated
- solution using, for example, 'NetBSD'. The Amiga port can communicate with the
- server using the remote shell protocol (rsh), and I have verified that the
- process works reasonably well with, for example, the public 'Samba' CVS
- repository. If you need a more secure method to communicate with the server
- ('rsh' is notoriously insecure and many systems no longer support it for
- precisely that reason) such as 'Kerberos IV' or 'Secure Shell' (ssh), you'll
- have a problem because there are no Amiga ports of these facilities available
- yet.
-
- CVS does not have a very sophisticated porting layer. Its file name semantics
- all stem from the Unix world and the 'OS/2', 'VMS' and 'Windows NT' ports
- merely resort to flipping slashes in file names, if necessary, when it comes to
- make a name fit the local system's semantics. I had to find a similar way to
- make the semantics work on the Amiga. What I did was to add a translation
- service in the Amiga specific code which knows how to translate names like '.'
- or '..'. But that's where it ends. Any more sophisticated naming schemes like
- 'foo/.././bar' may fail to translate properly. But then, those complex
- patterns should be pretty rare anyway.
-
- Unlike Heinz Wrobel's excellent 'RCS' port, this CVS port does not preserve
- Amiga file protection bits for files checked in. When you check in a project
- and check it out again, all file and directory protection bits will default to
- 'rwed', losing the 'archived', 'pure' and 'script' bits.
-
- The Amiga port will expand wild card patterns for file and directory names
- specified as command line parameters, such as "#?.c". The wild card pattern
- syntax is that of AmigaDOS. It is *not* the syntax of the standard regular
- expressions other GNU tools will use.
-
- You can access remote CVS repositories by means of a properly configured
- TCP/IP stack. This port requires that the stack complies to the AmiTCP V3 API
- definition, which all modern Amiga TCP/IP stacks do. It does not work with the
- INet-225 TCP/IP stack, though.
-
- When CVS resorts to calling external programs, a working 'PIPE:' device is
- required, which is not yet part of the AmigaOS Workbench distribution. Do not
- underestimate this. The program will fail or behave erratically without a
- working 'PIPE:' device. It is strongly recommended to download a working
- 'queue-handler', such as from Aminet.
-
- The source code for the Amiga port is included in this distribution. All you
- need to know before you can recompile this CVS port is described in the file
- 'README.AMIGA' which you can find in the 'source' directory.
-
- This is a 'single user' CVS port. There is just one single home directory
- (referred to as 'CVSHOME:') and your login name and ID are assumed to be the
- same (set in the 'USER', 'LOGUSER' or 'USERNAME' environment variables).
-
- There is no 'cvsbug' shell script or program included with this port.
-
-
- Contacting the author
- ---------------------
- If you have any further questions on this port, feel free to contact us:
-
- Olaf Barthel
- Brabeckstr. 35
- D-30559 Hannover
- Federal Republic of Germany
-
- olsen@sourcery.han.de
-
- Jens Langner
- Lannerstrasse 1
- D-01219 Dresdem
- Federal Republic of Germany
-
- Jens.Langner@htw-dresden.de
-